home *** CD-ROM | disk | FTP | other *** search
/ Java for 3D & VRML Worlds / Java for 3d and VRML Worlds.iso / examples / chap05 / DirBrowser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-11-25  |  6.9 KB  |  165 lines

  1. import java.io.File;
  2. import vrml.BaseNode;
  3. import vrml.Browser;
  4. import vrml.Event;
  5. import vrml.field.ConstSFBool;
  6. import vrml.field.MFNode;
  7. import vrml.field.SFInt32;
  8. import vrml.field.SFNode;
  9. import vrml.field.SFString;
  10. import vrml.node.Node;
  11. import vrml.node.Script;
  12.  
  13. public class DirBrowser extends Script {
  14.    // $FF: renamed from: b vrml.Browser
  15.    private Browser field_0;
  16.    private File dir;
  17.    private SFString dirname;
  18.    private MFNode addChildren;
  19.    private SFInt32 whichChoice;
  20.    public static final int NOTOPENED = 0;
  21.    public static final int OPENED = 1;
  22.    public static final int HIDE = 2;
  23.    private int opened;
  24.    // $FF: renamed from: r int
  25.    static int field_1;
  26.    public static final float FILESIZE = 1000.0F;
  27.    final String HEADER = "#VRML V2.0 utf8\n";
  28.    final String ROOT1R = "Transform { \n   children [ \n      Transform { translation 0 0 5 \n         children [ \n            Shape { \n               appearance DEF MAT Appearance{ \n                  material Material{ \n                     diffuseColor 0 0 1 \n                     emissiveColor 0 0 1 \n                     transparency  0.5 \n                  } \n               } \n               geometry Box { size 0.2 0.2 10.0 }}] \n      } \n      Transform { \n          rotation 1 0 0 1.57 \n          children [ \n              Shape { \n                 appearance USE MAT \n                geometry Cylinder { radius ";
  29.    final String ROOT2E = " height 0.01 } }\n          ] \n      }\n";
  30.    final String TAILER1R = "  ]\n";
  31.    final String TAILER2E = "}\n";
  32.    final String ROUTING1T = "ROUTE ";
  33.    final String ROUTING2S = ".isActive TO ";
  34.    final String ROUTING3E = ".clicked \n";
  35.    final String DIROBJ1XY = "Transform { \n translation ";
  36.    final String DIROBJ2U = " 0 \n   children [ \n      Transform { \n         children [ \n            Anchor { \n              url \"";
  37.    final String DIROBJ3T = "\" \n               children [ \n                  DEF ";
  38.    final String DIROBJ4S = " TouchSensor {} \n                  Shape { geometry Sphere {}} \n               ] \n            } \n         ] \n      } \n      DEF SW Switch {\n         whichChoice 0 \n         choice [\n            DEF DIR Transform {  translation 0 0 -10 } \n         ] \n      } \n   ] \n} \nDEF ";
  39.    final String DIROBJ5F = " Script { \n   url \"DirBrowser.class\" \n   eventIn SFBool    clicked \n   field SFNode dirnode USE DIR \n   field SFNode swnode USE SW \n   field SFString dirname \"";
  40.    final String DIROBJ6E = "\" \n} \n";
  41.    final String FILEOBJ1XYZ = "Transform { \n   translation ";
  42.    final String FILEOBJ2U = "   children [ \n      Anchor { \n         url \"";
  43.    final String FILEOBJ3H = "\"         children [ \n            Shape { \n               appearance Appearance { \n                  material Material { \n                     diffuseColor 1 1 0 \n                  } \n               } \n               geometry Box { size 2.0 2.0 ";
  44.    final String FILEOBJ4E = "}\n            } \n         ] \n      } \n   ] \n}\n";
  45.  
  46.    public void initialize() {
  47.       this.field_0 = ((BaseNode)this).getBrowser();
  48.       this.dirname = (SFString)((Script)this).getField("dirname");
  49.       Node var1 = (Node)((SFNode)((Script)this).getField("dirnode")).getValue();
  50.       this.addChildren = (MFNode)var1.getEventIn("addChildren");
  51.       var1 = (Node)((SFNode)((Script)this).getField("swnode")).getValue();
  52.       this.whichChoice = (SFInt32)var1.getExposedField("whichChoice");
  53.    }
  54.  
  55.    public void processEvent(Event var1) {
  56.       if (var1.getName().equals("clicked")) {
  57.          ConstSFBool var2 = (ConstSFBool)var1.getValue();
  58.          if (!var2.getValue()) {
  59.             if (this.opened == 0) {
  60.                this.openDirectory(this.dirname.getValue());
  61.                this.opened = 1;
  62.                return;
  63.             }
  64.  
  65.             if (this.opened == 1) {
  66.                this.whichChoice.setValue(-1);
  67.                this.opened = 2;
  68.                return;
  69.             }
  70.  
  71.             if (this.opened == 2) {
  72.                this.whichChoice.setValue(0);
  73.                this.opened = 1;
  74.             }
  75.          }
  76.       }
  77.  
  78.    }
  79.  
  80.    public void openDirectory(String var1) {
  81.       try {
  82.          this.dir = new File(var1);
  83.       } catch (Exception var17) {
  84.          this.field_0.setDescription("Can not open " + var1);
  85.          ((Throwable)var17).printStackTrace();
  86.          return;
  87.       }
  88.  
  89.       if (!this.dir.isDirectory()) {
  90.          this.field_0.setDescription("No such a directory: " + var1);
  91.       } else {
  92.          String[] var2 = this.dir.list();
  93.          int var3 = var2.length;
  94.          if (var3 != 0) {
  95.             float var4;
  96.             float var5;
  97.             if (var3 > 2) {
  98.                var4 = (float)((Math.PI * 2D) / (double)var3);
  99.                var5 = (float)((double)6.0F / ((double)2.0F * Math.sin((double)var4)));
  100.             } else if (var3 == 2) {
  101.                var4 = (float)Math.PI;
  102.                var5 = 2.0F;
  103.             } else {
  104.                var4 = 0.0F;
  105.                var5 = 0.1F;
  106.             }
  107.  
  108.             String var6 = "#VRML V2.0 utf8\nTransform { \n   children [ \n      Transform { translation 0 0 5 \n         children [ \n            Shape { \n               appearance DEF MAT Appearance{ \n                  material Material{ \n                     diffuseColor 0 0 1 \n                     emissiveColor 0 0 1 \n                     transparency  0.5 \n                  } \n               } \n               geometry Box { size 0.2 0.2 10.0 }}] \n      } \n      Transform { \n          rotation 1 0 0 1.57 \n          children [ \n              Shape { \n                 appearance USE MAT \n                geometry Cylinder { radius " + var5 + " height 0.01 } }\n          ] \n      }\n";
  109.             String var7 = "";
  110.  
  111.             for(int var8 = 0; var8 < var3; ++var8) {
  112.                Object var9 = null;
  113.                Object var10 = null;
  114.                float var11;
  115.                float var12;
  116.                if (var4 != 0.0F) {
  117.                   var11 = (float)((double)var5 * Math.sin((double)(var4 * (float)var8)));
  118.                   var12 = (float)((double)var5 * Math.cos((double)(var4 * (float)var8)));
  119.                } else {
  120.                   var12 = 0.0F;
  121.                   var11 = 0.0F;
  122.                }
  123.  
  124.                try {
  125.                   String var21 = var1 + "/" + var2[var8];
  126.                   File var19 = new File(var21);
  127.                   if (var19.isDirectory()) {
  128.                      String var13 = "TS" + field_1;
  129.                      String var14 = "SC" + field_1;
  130.                      ++field_1;
  131.                      var6 = var6 + "Transform { \n translation " + var11 + " " + var12 + " 0 \n   children [ \n      Transform { \n         children [ \n            Anchor { \n              url \"" + var21 + "\" \n               children [ \n                  DEF " + var13 + " TouchSensor {} \n                  Shape { geometry Sphere {}} \n               ] \n            } \n         ] \n      } \n      DEF SW Switch {\n         whichChoice 0 \n         choice [\n            DEF DIR Transform {  translation 0 0 -10 } \n         ] \n      } \n   ] \n} \nDEF " + var14 + " Script { \n   url \"DirBrowser.class\" \n   eventIn SFBool    clicked \n   field SFNode dirnode USE DIR \n   field SFNode swnode USE SW \n   field SFString dirname \"" + var21 + "\" \n} \n";
  132.                      var7 = var7 + "ROUTE " + var13 + ".isActive TO " + var14 + ".clicked \n";
  133.                   } else {
  134.                      float var22 = (float)var19.length() / 1000.0F;
  135.                      if (var22 < 1.0E-6F) {
  136.                         var22 = 0.1F;
  137.                      }
  138.  
  139.                      var6 = var6 + "Transform { \n   translation " + var11 + " " + var12 + " " + -((double)var22 / (double)2.0F) + "\n" + "   children [ \n      Anchor { \n         url \"" + var21 + "\"         children [ \n            Shape { \n               appearance Appearance { \n                  material Material { \n                     diffuseColor 1 1 0 \n                  } \n               } \n               geometry Box { size 2.0 2.0 " + var22 + "}\n            } \n         ] \n      } \n   ] \n}\n";
  140.                   }
  141.                } catch (Exception var16) {
  142.                   this.field_0.setDescription("Can not open " + var10);
  143.                   ((Throwable)var16).printStackTrace();
  144.                   return;
  145.                }
  146.             }
  147.  
  148.             var6 = var6 + "  ]\n" + var7 + "}\n";
  149.  
  150.             try {
  151.                BaseNode[] var20 = this.field_0.createVrmlFromString(var6);
  152.                if (var20 != null) {
  153.                   this.addChildren.setValue(var20);
  154.                   return;
  155.                }
  156.             } catch (Exception var15) {
  157.                this.field_0.setDescription("can not create VRML node");
  158.                ((Throwable)var15).printStackTrace();
  159.             }
  160.  
  161.          }
  162.       }
  163.    }
  164. }
  165.